package fiuba.algo3;

import fiuba.algo3.XMLProcessor.nucleo.Nodo;
import fiuba.algo3.XMLProcessor.nucleo.NodoXML;
import fiuba.algo3.persistencia.ConstructorPerfil;
import fiuba.algo3.persistencia.XMLConstruible;

public class Perfil implements XMLConstruible
{
	private final String sexo;
	private final String hobby;
	private final String cabello;
	private final String senia;
	private final String vehiculo;
	
	public Perfil()
	{
		this.sexo = "";
		this.hobby = "";
		this.cabello = "";
		this.senia = "";
		this.vehiculo = "";	
	}

	public Perfil(String sexo, String hobby, String cabello, String senia, String vehiculo)
	{
		this.sexo = sexo;
		this.hobby = hobby;
		this.cabello = cabello;
		this.senia = senia;
		this.vehiculo = vehiculo;	
	}

	public boolean coincideSexo(String sexo)
	{
		if ("".equals(sexo))
			return true;
		return (this.sexo.equals(sexo));
	}

	public boolean coincideHobby(String hobby)
	{
		if ("".equals(hobby))
			return true;
		return (this.hobby.equals(hobby));
	}

	public boolean coincideCabello(String cabello)
	{
		if ("".equals(cabello))
			return true;
		return (this.cabello.equals(cabello));
	}

	public boolean coincideSenia(String senia)
	{
		if ("".equals(senia))
			return true;
		return (this.senia.equals(senia));
	}

	public boolean coincideVehiculo(String vehiculo)
	{
		if ("".equals(vehiculo))
			return true;
		return (this.vehiculo.equals(vehiculo));
	}

	public boolean coincide(Perfil perfil)
	{		
		if (!perfil.coincideSexo(this.sexo)) return false;
		if (!perfil.coincideHobby(this.hobby)) return false;
		if (!perfil.coincideCabello(this.cabello)) return false;
		if (!perfil.coincideSenia(this.senia)) return false;
		return perfil.coincideVehiculo(this.vehiculo);
	}

	public boolean coincideExactamente(Perfil perfil) {
		return perfil.coincide(this);
	}

	public String obtenerSexo() {
		
		return sexo;
	}

	public String obtenerHobby() {
		return hobby;
	}

	public String obtenerCabello() {
		return cabello;
	}

	public String obtenerSenia() {
		return senia;
	}

	public String obtenerVehiculo() {
		return vehiculo;
	}

	public Perfil construir(NodoXML nodo)
	{
		return ConstructorPerfil.construir(nodo);
	}

	public NodoXML nodalizar()
	{
		NodoXML nodoRaiz = new Nodo("objeto");
//		nodoRaiz.setAttribute("clase", "Perfil");
//		nodoRaiz.appendChild(fabricaDeNodos.nuevoNodoCampoPrimitivo("sexo", this.sexo));
//		nodoRaiz.appendChild(fabricaDeNodos.nuevoNodoCampoPrimitivo("hobby", this.hobby));
//		nodoRaiz.appendChild(fabricaDeNodos.nuevoNodoCampoPrimitivo("cabello", this.cabello));
//		nodoRaiz.appendChild(fabricaDeNodos.nuevoNodoCampoPrimitivo("senia", this.senia));
//		nodoRaiz.appendChild(fabricaDeNodos.nuevoNodoCampoPrimitivo("vehiculo", this.vehiculo));
		return nodoRaiz;
	}

}